Skip to main content

Plan de Pruebas

Logo FisioFind

FISIO FIND - PLAN DE PRUEBAS


ÍNDICE


Ficha del documento

  • Nombre del Proyecto: FISIO FIND

  • Número de Grupo: Grupo 6

  • Entregable: #SPRINT 3

  • Miembros del grupo: Alberto Carmona Sicre, Antonio Macías Ferrera, Benjamín Ignacio Maureira Flores, Francisco Capote García, Daniel Alors Romero, Daniel Fernández Caballero, Daniel Ruiz López, Daniel Tortorici Bartús, Daniel Vela Camacho, Delfín Santana Rubio, Guadalupe Ridruejo Pineda, Julen Redondo Pacheco, Miguel Encina Martínez, Francisco Mateos Villarejo, Pablo Fernández Pérez, Ramón Gavira Sánchez, Rafael Pulido Cifuentes.

  • Contribuidores: Delfín Santana Rubio

  • Fecha de Creación: 09/04/2025

  • Versión: v1.2


Histórico de Modificaciones

FechaVersiónRealizada porDescripción de los cambios
09/04/2025v1.0Delfín Santana RubioCreación del documento y primeros cambios.
09/04/2025v1.1Miguel Encina MartínezRevisión del documento y corrección de faltas de ortografía
01/05/2025v1.2Delfín Santana RubioActualización del estado.

1. INTRODUCCIÓN

Un sistema de información puede entenderse, desde una perspectiva abstracta, como una función que transforma vectores de entrada en vectores de salida dentro de un espacio ℝⁿ → ℝᵐ, donde tanto las entradas como las salidas pueden tomar valores en un rango teórico que va de −∞ a +∞. Esta función, que representa la lógica y comportamiento del sistema, es en gran medida desconocida o indefinida hasta que se somete a validación.

Es a través del proceso de pruebas donde empezamos a delinear el contorno del hiperplano que define el comportamiento observable de la aplicación. Cada prueba ejecutada actúa como un punto de muestreo sobre esa función, permitiéndonos visualizar su forma, detectar discontinuidades, anomalías o desviaciones respecto al comportamiento esperado.

Solo mediante la implementación sistemática de pruebas es posible delimitar con precisión el espacio funcional real de la aplicación: el producto final que aspiramos a entregar.

2. PRUEBAS CONTEMPLADAS Y ÁREAS DE APLICACIÓN

En este apartado se pretende definir las pruebas que se contemplan en este plan:

  • Pruebas unitarias: Pruebas que afectan a una única función o funcionalidad que no depende de otras.
  • Pruebas de integración: Pruebas que afectan a una sola o conjunto de funciones o funcionalidades que sí dependen de otras.
  • Pruebas de seguridad: Pruebas que comprueban la seguridad de la aplicación. La seguridad de una aplicación se puede entender como el conjunto de configuraciones y lógica de la aplicación. Existen herramientas automáticas que pueden hacer este tipo de tests.
  • Pruebas de interfaz: Pruebas que interactúan con la interfaz de la aplicación. Se podría entender como pruebas de integración del sistema con la interfaz.
  • Pruebas de carga: Pruebas que simulan interacciones con el sistema y miden su respuesta enfatizando resultados relacionados con el rendimiento del sistema. Generalmente, estas intentan probar lo que su propio nombre indica, cómo el sistema se comporta frente a diversas cargas.

Por otro lado, a continuación se especifica en que áreas se utilizará cada tipo prueba:

  • Backend: se harán pruebas unitarias (o, cuando se requiera, de integración), de integración, de seguridad y de carga.
  • Frontend: se harán pruebas de seguridad, de interfaz y de carga.

No vamos a hacer pruebas unitarias o de integración para el frontend porque entendemos que, a través de las pruebas de interfaz, también se está probando perfectamente la funcionalidad del frontend.

3. METODOLOGÍA Y POLÍTICA DE PRUEBAS

No se deben de hacer pruebas sin razón. Es decir, si se sabe que un componente nunca va a ser integrado con otro, no tiene sentido probarlo. Del mismo modo, si un componente siempre se llama a través de otro, lo que tiene sentido es comprobar directamente la integración de estos dos, como si de un solo componente fuera.

Por otro lado, se entiende que todos los tests deben de ejecutarse correctamente. Sin embargo, durante el desarrollo se podrán dejar tests fallidos bajo la justificación de dejar constancia de que hay un error no contemplado en el código de la aplicación. Por ejemplo, si un/a tester está haciendo tests y encuentra un caso no contemplado en el código, tiene la opción de resolverlo directamente o de darlo a conocer por un canal apropiado. Independientemente de la decisión que tome, el test se deja. Sin embargo, para la entrega del PPL la mayoría de los tests deberán pasarse, pudiendo dejar algunos tests fallando como muestra de que hay áreas de mejora. Se hablará más detenidamente sobre esto en la sección de objetivos.

El canal apropiado que se menciona en el ejemplo anterior es un chat específico para bugs que tenemos el equipo de Fisio Find.

Las pruebas a implementar plantean obtener el máximo de coverage posible. Además, los tests hechos deberán aportar casos positivos y negativos, para así asegurar el comportamiento esperado de la aplicación.

Finalmente, las pruebas de seguridad se harán cuando se haga el reporte de seguridad y sus resultados se podrán ver en el documento. En el reporte de seguridad se hacen dos cosas: un análisis de seguridad de la app con ZAP y documentar las nuevas medidas o decisiones de seguridad que se han tomado o implementado en el sprint especificado. Para las pruebas de seguridad sólo es pertinente la sección del análisis de seguridad. Por otro lado, el reporte de seguridad está en la carpeta de reportes y sólo tendrá vigencia el último generado. Los resultados se podrán ver en la sección de "Resultados del análisis" y "Conclusiones". La carpeta se encuentra en la ruta docs/03_reports/security_reports y el vigente es el del último sprint.

3.1 Herramientas que se van a utilizar para las pruebas

En general, se va a intentar integrar el mínimo número de herramientas externas a los que ya nos dan los frameworks y lenguajes que utilizamos en el desarrollo. Esto es así porque se quiere ahorrar tiempo de configuración e integración. También, tomamos como referencia las herramientas que se han dado en las píldoras teóricas y en otras asignaturas.

Las pruebas de seguridad se harán tal y como se hacen en el reporte de seguridad, con la herramienta ZAP.

4. PRUEBAS IMPLEMENTADAS

4.1 PRUEBAS UNITARIAS Y DE INTEGRACIÓN

A fecha de redacción de este documento, todos los módulos del backend de Fisio Find están probados.

El resto de módulos ya están probados. Además, como se ha dicho en la metodología, todos estos tienen tests de casos positivos y negativos. Creemos que ofrecer una descripción de cada test implementado no aporta valor a este documento.

A continuación, ofrecemos un listado detallado del coverage actual:

NameStmtsMissCover
appointment/init.py00100%
appointment/admin.py70100%
appointment/apps.py40100%
appointment/emailUtils.py1164759%
appointment/migrations/0001_initial.py50100%
appointment/migrations/0002_initial.py60100%
appointment/migrations/init.py00100%
appointment/models.py23196%
appointment/serializers.py59493%
appointment/tests.py14132099%
appointment/urls.py50100%
appointment/views.py4889381%
appointment_rating/init.py00100%
appointment_rating/admin.py10100%
appointment_rating/apps.py40100%
appointment_rating/emailUtils.py120100%
appointment_rating/migrations/0001_initial.py60100%
appointment_rating/migrations/0002_initial.py60100%
appointment_rating/migrations/init.py00100%
appointment_rating/models.py160100%
appointment_rating/serializers.py19195%
appointment_rating/tests.py2060100%
appointment_rating/urls.py30100%
appointment_rating/views.py114992%
files/init.py00100%
files/admin.py663448%
files/apps.py40100%
files/migrations/0001_initial.py50100%
files/migrations/0002_initial.py60100%
files/migrations/init.py00100%
files/models.py421662%
files/serializers.py1131587%
files/tests.py534499%
files/urls.py30100%
files/views.py2554782%
fisio_find/init.py00100%
fisio_find/settings.py77791%
fisio_find/urls.py14379%
guest_session/init.py00100%
guest_session/admin.py00100%
guest_session/apps.py40100%
guest_session/migrations/init.py00100%
guest_session/models.py00100%
guest_session/tests.py900100%
guest_session/urls.py40100%
guest_session/views.py2043981%
manage.py11282%
payment/init.py00100%
payment/admin.py70100%
payment/apps.py40100%
payment/migrations/0001_initial.py70100%
payment/migrations/init.py00100%
payment/models.py23196%
payment/serializers.py90100%
payment/tests.py5710100%
payment/urls.py30100%
payment/utils/pdf_generator.py950100%
payment/views.py36811868%
questionnaire/init.py00100%
questionnaire/admin.py30100%
questionnaire/apps.py40100%
questionnaire/migrations/0001_initial.py50100%
questionnaire/migrations/0002_initial.py60100%
questionnaire/migrations/init.py00100%
questionnaire/models.py21671%
questionnaire/serializers.py45882%
questionnaire/tests.py1460100%
questionnaire/urls.py30100%
questionnaire/views.py81989%
ratings/init.py00100%
ratings/admin.py11191%
ratings/apps.py40100%
ratings/migrations/0001_initial.py50100%
ratings/migrations/0002_initial.py60100%
ratings/migrations/init.py00100%
ratings/models.py13192%
ratings/serializers.py32391%
ratings/tests.py1970100%
ratings/urls.py30100%
ratings/views.py85495%
terms/init.py00100%
terms/admin.py30100%
terms/apps.py40100%
terms/migrations/0001_initial.py50100%
terms/migrations/0002_initial.py60100%
terms/migrations/init.py00100%
terms/models.py15193%
terms/serializers.py80100%
terms/tests.py1060100%
terms/urls.py30100%
terms/views.py72494%
treatments/init.py00100%
treatments/admin.py28293%
treatments/migrations/0001_initial.py60100%
treatments/migrations/0002_initial.py60100%
treatments/migrations/init.py00100%
treatments/models.py116298%
treatments/serializers.py104793%
treatments/tests.py11803597%
treatments/urls.py30100%
treatments/views.py63119469%
users/init.py00100%
users/admin.py48296%
users/apps.py40100%
users/emailUtils.py886922%
users/forms.py1058024%
users/migrations/0001_initial.py120100%
users/migrations/init.py00100%
users/models.py1301291%
users/permissions.py130100%
users/serializers.py3214686%
users/subscription_views.py533730%
users/tests.py1325199%
users/urls.py70100%
users/util.py132894%
users/validacionFisios.py3953745%
users/views.py39313067%
videocall/init.py00100%
videocall/admin.py30100%
videocall/apps.py40100%
videocall/migrations/0001_initial.py60100%
videocall/migrations/init.py00100%
videocall/models.py18194%
videocall/serializers.py21195%
videocall/tests.py2100100%
videocall/urls.py30100%
videocall/views.py800100%

En resumen, el coverage total actual es del 87%. Como se puede ver, hay módulos que ya están probados pero podría mejorarse su coverage. El script de validación de fisios está probado pero como tarda mucho en probarse (porque utiliza selenium) no se ofrece el coverage aqui.

4.2 PRUEBAS DE INTERFAZ

Se han implementado pruebas de interfaz de con el add-on de selenium ide. Estas cubren casos específicos.

4.3 PRUEBAS DE CARGA

Se han implementado pruebas de interfaz con locust. Estas cubren casos específicos.

4.4 PRUEBAS DE SEGURIDAD

Finalmente, las pruebas de seguridad sí están implementadas y se hacen durante el sprint. Actualmente Fisio Find no tiene ningún aviso de categoría high.

5. OBJETIVOS

Para el PPL se deberán tener estas pruebas implementadas:

  • Pruebas de integración o unitarias para todos los módulos del backend de Fisio Find.
    • Estas pruebas deberán ofrecer un coverage mínimo del 80%.
  • Pruebas de interfaz para el frontend.
  • Pruebas de seguridad para el frontend y backend.
  • Pruebas de carga para frontend y backend.

Además, como ya se ha dicho anteriormente, la mayoría de las pruebas deberán pasarse para el PPL(se pueden dejar tests que fallen para cambiarse posteriormente).

Por otro lado, las pruebas de seguridad no ofrecen un valor de pasado o no pasado, sino que dan una categoría de riesgo o de peligro. Nuestro objetivo es no tener ningún aviso que sea de categoría crítica o alta que no esté justificado en el reporte de seguridad (el cual se puede encontrar en la carpeta de reportes que se encuentra en la ruta docs/03_reports/security_reports y el vigente es el del último sprint).